package JVM相关知识;

/**
 * @author coderFu
 * @create 2021/12/25
 * 静态分配解释     方法的重载
 */
public class StaticDispatchDemo {

    static abstract class Human{

    }

    static class Man extends Human{

    }

    static class Women extends Human{

    }

    public void testFunction(Human human){
        System.out.println("function human");
    }

    public void testFunction(Women women){
        System.out.println("function women");
    }

    public void testFunction(Man man){
        System.out.println("function man");
    }

    public static void main(String[] args) {
        Man man = new Man();
        Human women = new Women();


        StaticDispatchDemo test = new StaticDispatchDemo();
        test.testFunction(man);
        test.testFunction(women);
        /**
         * 在重载的时候是通过参数的静态类型而不是实际类型作为判断依据的（静态分派原则）
         * 静态类型是编译时可知的，因此，在编译阶段，javac编译器会根据参数的静态
         * 类型来决定使用哪个重载版本。
         * 静态方法，私有方法，构造器 也可以拥有重载版本，选择重载版本的过程也是通过
         * 静态分派来完成的
         *
         */
    }



}


